package tech.aistar.day06.design.dip;

/**
 * 本类用来演示: 司机类
 *
 * @author: success
 * @date: 2021/3/15 2:41 下午
 */
public class Driver {

    //1. 未遵守依赖倒置原则的写法

    //缺点:
    //a. 司机类和具体的车辆产生了强依赖关系
    //b. 如果司机类的技术升级 - 需要在Driver类内部进行修改了
    //   违背了总的原则 - "开闭原则"


    //司机掌握了开宝马的技能
//    public void driverBaoMa(BaoMa baoMa){
//        baoMa.run();
//    }

    //司机掌握了奥迪...
//    public void driverAodi(Aodi aodi){
//        aodi.run();
//    }

    //如果司机又掌握了一个新的技能 - 开飞机
    //程序需要改动了...

    //依赖倒置原则 - 由原来维护的子类转变成维护父类.

    //面向父类编程的思想
    //方法的参数类型写成父类,调用方法的时候,可以传入这父类的任意一个子类对象
    public void driverCar(CarSup carSup){
        carSup.run();
    }

}
